export default {
  menu: {
    knowledgeBase: 'Knowledge Base',
    chat: 'Chat',
    createChat: 'Create Chat',
    tenant: 'Account Info',
    settings: 'System Settings',
    logout: 'Logout',
    uploadKnowledge: 'Upload Knowledge',
    deleteRecord: 'Delete Record',
    newSession: 'New Chat',
    confirmLogout: 'Are you sure you want to logout?',
    systemInfo: 'System Information'
  },
  knowledgeBase: {
    title: 'Knowledge Base',
    list: 'Knowledge Base List',
    fileContent: 'File Content',
    detail: 'Knowledge Base Details',
    create: 'Create Knowledge Base',
    edit: 'Edit Knowledge Base',
    delete: 'Delete Knowledge Base',
    name: 'Name',
    description: 'Description',
    files: 'Files',
    settings: 'Settings',
    documentCategoryTitle: 'Document Categories',
    tagUpdateSuccess: 'Tag updated successfully',
    category: 'Category',
    faqCategoryTitle: 'FAQ Categories',
    untagged: 'Uncategorized',
    tagSearchTooltip: 'Search tags',
    tagCreateAction: 'Create tag',
    tagSearchPlaceholder: 'Type to filter tags',
    tagNamePlaceholder: 'Enter tag name',
    tagNameRequired: 'Please provide a tag name',
    tagCreateSuccess: 'Tag created',
    tagEditSuccess: 'Tag updated',
    tagDeleteTitle: 'Delete tag',
    tagDeleteDesc: 'Delete tag "{name}"? Related FAQs will become untagged.',
    tagDeleteSuccess: 'Tag deleted',
    tagEditAction: 'Rename',
    tagDeleteAction: 'Delete',
    tagEmptyResult: 'No matching tags',
    tagLabel: 'Category',
    tagPlaceholder: 'Please select a category',
    noTags: 'No categories',
    upload: 'Upload File',
    uploadSuccess: 'File uploaded successfully!',
    uploadFailed: 'File upload failed!',
    docActionUnsupported: 'This knowledge base type does not support this action',
    fileExists: 'File already exists',
    uploadingMultiple: 'Uploading {total} files...',
    uploadAllSuccess: 'Successfully uploaded {count} files!',
    uploadPartialSuccess: 'Upload completed: {success} succeeded, {fail} failed',
    uploadAllFailed: 'All files failed to upload',
    uploadingFolder: 'Uploading {total} files from folder...',
    uploadingValidFiles: 'Uploading {valid}/{total} valid files...',
    noValidFiles: 'No valid files',
    noValidFilesInFolder: 'All {total} files in folder are unsupported',
    noValidFilesSelected: 'All selected files are unsupported',
    hiddenFilesFiltered: 'Filtered {count} hidden files',
    imagesFilteredNoVLM: 'Filtered {count} image files (VLM not enabled)',
    invalidFilesFiltered: 'Filtered {count} unsupported files',
    unsupportedFileType: 'Unsupported file type',
    failedFilesList: 'Failed files:',
    andMoreFiles: '...and {count} more files',
    duplicateFilesSkipped: '{count} duplicate files skipped',
    uploadFile: 'Upload File',
    uploadFileDesc: 'Supports PDF, Word, TXT, etc.',
    importURL: 'Import from URL',
    importURLDesc: 'Import via URL link',
    importURLTitle: 'Import from URL',
    manualCreate: 'Manual Create',
    manualCreateDesc: 'Write document content directly',
    urlRequired: 'Please enter a URL',
    invalidURL: 'Please enter a valid URL',
    urlImportSuccess: 'URL imported successfully!',
    urlImportFailed: 'URL import failed!',
    urlExists: 'This URL already exists',
    urlLabel: 'URL Address',
    urlPlaceholder: 'Enter webpage URL, e.g., https://example.com',
    urlTip: 'Supports importing various webpage contents. The system will automatically extract and parse text content from the webpage',
    typeURL: 'URL',
    typeManual: 'Manual',
    typeFile: 'File',
    urlSource: 'Source URL',
    documentTitle: 'Document Title',
    webContent: 'Web Content',
    documentContent: 'Document Content',
    importTime: 'Import Time',
    createTime: 'Create Time',
    characters: 'chars',
    segment: 'Segment',
    chunkCount: 'Total {count} segments',
    viewOriginal: 'View Original File',
    viewChunks: 'View Chunks',
    originalFileNotSupported: 'This file type does not support original file view. Please download to view.',
    loadOriginalFailed: 'Failed to load original file content',
    questions: 'Questions',
    generatedQuestions: 'Generated Questions',
    confirmDeleteQuestion: 'Are you sure you want to delete this question? The corresponding vector index will also be removed.',
    legacyQuestionCannotDelete: 'Legacy format questions cannot be deleted. Please regenerate questions.',
    notInitialized: 'Knowledge base is not initialized. Please configure models in settings before uploading files',
    getInfoFailed: 'Failed to get knowledge base information, file upload is not possible',
    missingId: 'Knowledge base ID is missing',
    deleteFailed: 'Delete failed. Please try again later!',
    quickActions: 'Quick Actions',
    createKnowledgeBase: 'Create Knowledge Base',
    knowledgeBaseName: 'Knowledge Base Name',
    enterName: 'Enter knowledge base name',
    embeddingModel: 'Embedding Model',
    selectEmbeddingModel: 'Select embedding model',
    summaryModel: 'Summary Model',
    selectSummaryModel: 'Select summary model',
    rerankModel: 'Rerank Model',
    selectRerankModel: 'Select rerank model (optional)',
    createSuccess: 'Knowledge base created successfully',
    createFailed: 'Failed to create knowledge base',
    updateSuccess: 'Knowledge base updated successfully',
    updateFailed: 'Failed to update knowledge base',
    deleteSuccess: 'Knowledge base deleted successfully',
    deleteConfirm: 'Are you sure you want to delete this knowledge base?',
    fileName: 'File Name',
    fileSize: 'File Size',
    uploadTime: 'Upload Time',
    status: 'Status',
    actions: 'Actions',
    processing: 'Processing',
    completed: 'Completed',
    failed: 'Failed',
    noFiles: 'No files',
    dragFilesHere: 'Drag files here or',
    clickToUpload: 'click to upload',
    supportedFormats: 'Supported formats',
    maxFileSize: 'Max file size',
    viewDetails: 'View Details',
    downloadFile: 'Download File',
    deleteFile: 'Delete File',
    confirmDeleteFile: 'Are you sure you want to delete this file?',
    totalFiles: 'Total files',
    totalSize: 'Total size',
    // Additional translations for KnowledgeBase.vue
    newSession: 'New Chat',
    editDocument: 'Edit Document',
    draft: 'Draft',
    draftTip: 'Temporarily saved and not included in retrieval',
    untitledDocument: 'Untitled Document',
    deleteDocument: 'Delete Document',
    parsingFailed: 'Parsing failed',
    parsingInProgress: 'Parsing...',
    generatingSummary: 'Generating summary...',
    deleteConfirmation: 'Delete Confirmation',
    confirmDeleteDocument: 'Confirm deletion of document "{fileName}", recovery will be impossible after deletion',
    cancel: 'Cancel',
    confirmDelete: 'Confirm Delete',
    selectKnowledgeBaseFirst: 'Please select a knowledge base first',
    sessionCreationFailed: 'Failed to create chat session',
    sessionCreationError: 'Chat session creation error',
    settingsParsingFailed: 'Failed to parse settings',
    fileUploadEventReceived: 'File upload event received, uploaded knowledge base ID: {uploadedKbId}, current knowledge base ID: {currentKbId}',
    matchingKnowledgeBase: 'Matching knowledge base, starting file list update',
    routeParamChange: 'Route parameter change, re-fetching knowledge base content',
    fileUploadEventListening: 'Listening for file upload events',
    apiCallKnowledgeFiles: 'Direct API call to get knowledge base file list',
    responseInterceptorData: 'Since the response interceptor has already returned data, result is part of the response data',
    hookProcessing: 'Processing according to useKnowledgeBase hook method',
    errorHandling: 'Error handling',
    priorityCurrentPageKbId: 'Priority to use knowledge base ID of current page',
    fallbackLocalStorageKbId: 'If current page has no knowledge base ID, attempt to get knowledge base ID from settings in localStorage',
    // Additional translations for KnowledgeBaseList.vue
    createNewKnowledgeBase: 'Create Knowledge Base',
    uninitializedWarning: 'Some knowledge bases are not initialized, you need to configure model information in settings first to add knowledge documents',
    initializedStatus: 'Initialized',
    notInitializedStatus: 'Not Initialized',
    needSettingsFirst: 'You need to configure model information in settings first to add knowledge',
    documents: 'Documents',
    configureModelsFirst: 'Please configure model information in settings first',
    confirmDeleteKnowledgeBase: 'Confirm deletion of this knowledge base?',
    createKnowledgeBaseDialog: 'Create Knowledge Base',
    enterNameKb: 'Enter name',
    enterDescriptionKb: 'Enter description',
    createKb: 'Create',
    deleted: 'Deleted',
    deleteFailedKb: 'Delete failed',
    noDescription: 'No description',
    emptyKnowledgeDragDrop: 'Knowledge is empty, drag and drop to upload',
    pdfDocFormat: 'pdf, doc format files, max 10M',
    textMarkdownFormat: 'text, markdown format files, max 200K',
    dragFileNotText: 'Please drag files instead of text or links',
    searchPlaceholder: 'Search knowledge bases...',
    docSearchPlaceholder: 'Search document names...',
    fileTypeFilter: 'File Type',
    allFileTypes: 'All Types',
    noMatch: 'No matching knowledge base found',
    noKnowledge: 'No knowledge bases available',
    loadingFailed: 'Failed to load knowledge bases'
  },

  agent: {
    taskLabel: 'Task:',
    copy: 'Copy',
    addToKnowledgeBase: 'Add to Knowledge Base',
    updatePlan: 'Update Plan',
    webSearchFound: 'Found <strong>{count}</strong> web search result(s)',
    argumentsLabel: 'Arguments',
    toolFallback: 'Tool'
  },
  settings: {
    title: 'Settings',
    modelConfig: 'Model Settings',
    modelManagement: 'Model Management',
    agentConfig: 'Agent Settings',
    conversationConfig: 'Conversation Settings',
    conversationStrategy: 'Conversation Strategy',
    webSearchConfig: 'Web Search',
    mcpService: 'MCP Service',
    systemSettings: 'System Settings',
    tenantInfo: 'Tenant Info',
    apiInfo: 'API Info',
    system: 'System Settings',
    systemConfig: 'System Configuration',
    knowledgeBaseSettings: 'Knowledge Base Settings',
    configureKbModels: 'Configure models and document splitting parameters for this knowledge base',
    manageSystemModels: 'Manage and update system models and service configurations',
    basicInfo: 'Basic Information',
    documentSplitting: 'Document Splitting',
    apiEndpoint: 'API Endpoint',
    enterApiEndpoint: 'Enter API endpoint, e.g.: http://localhost',
    enterApiKey: 'Enter API key',
    enterKnowledgeBaseId: 'Enter knowledge base ID',
    saveConfig: 'Save Configuration',
    reset: 'Reset',
    configSaved: 'Configuration saved successfully',
    enterApiEndpointRequired: 'Enter API endpoint',
    enterApiKeyRequired: 'Enter API key',
    enterKnowledgeBaseIdRequired: 'Enter knowledge base ID',
    name: 'Name',
    enterName: 'Enter name',
    description: 'Description',
    chunkSize: 'Chunk Size',
    chunkOverlap: 'Chunk Overlap',
    save: 'Save',
    saving: 'Saving...',
    saveSuccess: 'Saved successfully',
    saveFailed: 'Failed to save',
    model: 'Model',
    llmModel: 'LLM Model',
    embeddingModel: 'Embedding Model',
    rerankModel: 'Rerank Model',
    vlmModel: 'Multimodal Model',
    modelName: 'Model Name',
    modelUrl: 'Model URL',
    apiKey: 'API Key',
    cancel: 'Cancel',
    saveFailedSettings: 'Failed to save settings',
    enterNameRequired: 'Enter name'
  },
  webSearchSettings: {
    title: 'Web Search Configuration',
    description: 'Configure web search so answers can include up-to-date information from the internet.',
    providerLabel: 'Search Provider',
    providerDescription: 'Choose the search engine service used for web search',
    providerPlaceholder: 'Select a search engine...',
    apiKeyLabel: 'API Key',
    apiKeyDescription: 'Enter the API key for the selected search provider',
    apiKeyPlaceholder: 'Enter API key',
    maxResultsLabel: 'Maximum Results',
    maxResultsDescription: 'Maximum number of results returned per search (1-50)',
    includeDateLabel: 'Include Publish Date',
    includeDateDescription: 'Include publish date information in search results',
    compressionLabel: 'Compression Method',
    compressionDescription: 'Choose how to compress content from search results',
    compressionNone: 'No Compression',
    compressionSummary: 'LLM Summary',
    blacklistLabel: 'URL Blacklist',
    blacklistDescription: 'Exclude specific domains or URLs from search results. One per line. Supports wildcards (*) and regular expressions (/pattern/).',
    blacklistPlaceholder: 'For example:\n*://*.example.com/*\n/example\\.(net|org)/',
    errors: {
      unknown: 'Unknown error'
    },
    toasts: {
      loadProvidersFailed: 'Failed to load search providers: {message}',
      saveSuccess: 'Web search configuration saved',
      saveFailed: 'Failed to save configuration: {message}'
    }
  },
  graphSettings: {
    title: 'Knowledge Graph Configuration',
    description: 'Configure entity-relationship extraction to automatically build knowledge graphs from text',
    enableLabel: 'Enable Entity-Relationship Extraction',
    enableDescription: 'Automatically extract entities and relationships from text when enabled',
    tagsLabel: 'Relationship Types',
    tagsDescription: 'Define relationship type tags to extract, separated by commas',
    tagsPlaceholder: 'Enter relationship types, e.g., works_at, colleague, friend',
    generateRandomTags: 'Generate Random Tags',
    sampleTextLabel: 'Sample Text',
    sampleTextDescription: 'Sample text for testing entity-relationship extraction',
    sampleTextPlaceholder: 'Enter text containing entities and relationships...',
    generateRandomText: 'Generate Random Text',
    entityListLabel: 'Entity List',
    entityListDescription: 'Entities and their attributes extracted from text',
    nodeNamePlaceholder: 'Enter entity name',
    attributePlaceholder: 'Enter attribute value',
    addAttribute: 'Add Attribute',
    manageEntitiesLabel: 'Manage Entities',
    manageEntitiesDescription: 'Add or remove entity nodes',
    addEntity: 'Add Entity',
    relationListLabel: 'Relationship List',
    relationListDescription: 'Define relationship connections between entities',
    selectEntity: 'Select Entity',
    selectRelationType: 'Select Relationship Type',
    manageRelationsLabel: 'Manage Relationships',
    manageRelationsDescription: 'Add or remove relationships between entities',
    addRelation: 'Add Relationship',
    extractActionsLabel: 'Extraction Actions',
    extractActionsDescription: 'Perform entity-relationship extraction or manage sample data',
    startExtraction: 'Start Extraction',
    extracting: 'Extracting...',
    defaultExample: 'Default Example',
    clearExample: 'Clear Example',
    completeModelConfig: 'Please complete model configuration first',
    tagsGenerated: 'Tags generated successfully',
    tagsGenerateFailed: 'Failed to generate tags',
    textGenerated: 'Text generated successfully',
    textGenerateFailed: 'Failed to generate text',
    pleaseInputText: 'Please enter sample text first',
    extractSuccess: 'Entity-relationship extraction successful',
    extractFailed: 'Entity-relationship extraction failed',
    exampleLoaded: 'Example loaded',
    exampleCleared: 'Example cleared',
    disabledWarning: 'Knowledge graph database is not enabled, entity-relationship extraction will not be available',
    howToEnable: 'How to enable knowledge graph?',
    saveSuccess: 'Graph configuration saved',
    saveFailed: 'Failed to save configuration: {message}',
    errors: {
      unknown: 'Unknown error',
    },
  },
  initialization: {
    title: 'Initialization',
    welcome: 'Welcome to WeKnora',
    description: 'Please configure the system before starting',
    step1: 'Step 1: Configure LLM Model',
    step2: 'Step 2: Configure Embedding Model',
    step3: 'Step 3: Configure Additional Models',
    complete: 'Complete Initialization',
    skip: 'Skip',
    next: 'Next',
    previous: 'Previous',
    // Ollama service
    ollamaServiceStatus: 'Ollama Service Status',
    refreshStatus: 'Refresh Status',
    ollamaServiceAddress: 'Ollama Service Address',
    notConfigured: 'Not Configured',
    notRunning: 'Not Running',
    normal: 'Normal',
    installedModels: 'Installed Models',
    none: 'None temporarily',
    // Knowledge base
    knowledgeBaseInfo: 'Knowledge Base Information',
    knowledgeBaseName: 'Knowledge Base Name',
    knowledgeBaseNamePlaceholder: 'Enter knowledge base name',
    knowledgeBaseDescription: 'Knowledge Base Description',
    knowledgeBaseDescriptionPlaceholder: 'Enter knowledge base description',
    // LLM model
    llmModelConfig: 'LLM Large Language Model Configuration',
    modelSource: 'Model Source',
    local: 'Ollama (Local)',
    remote: 'Remote API (Remote)',
    modelName: 'Model Name',
    modelNamePlaceholder: 'E.g.: qwen3:0.6b',
    baseUrl: 'Base URL',
    baseUrlPlaceholder: 'E.g.: https://api.openai.com/v1, remove /chat/completions from the end of URL',
    apiKey: 'API Key (Optional)',
    apiKeyPlaceholder: 'Enter API Key (Optional)',
    downloadModel: 'Download Model',
    installed: 'Installed',
    notInstalled: 'Not Installed',
    notChecked: 'Not Checked',
    checkConnection: 'Check Connection',
    connectionNormal: 'Connection Normal',
    connectionFailed: 'Connection Failed',
    checkingConnection: 'Checking Connection',
    // Embedding model
    embeddingModelConfig: 'Embedding Model Configuration',
    embeddingWarning: 'Knowledge base already has files, cannot change embedding model configuration',
    dimension: 'Dimension',
    dimensionPlaceholder: 'Enter vector dimension',
    detectDimension: 'Detect Dimension',
    // Rerank model
    rerankModelConfig: 'Rerank Model Configuration',
    enableRerank: 'Enable Rerank Model',
    // Multimodal settings
    multimodalConfig: 'Multimodal Configuration',
    enableMultimodal: 'Enable image information extraction',
    visualLanguageModelConfig: 'Visual Language Model Configuration',
    interfaceType: 'Interface Type',
    openaiCompatible: 'OpenAI Compatible Interface',
    // Storage settings
    storageServiceConfig: 'Storage Service Configuration',
    storageType: 'Storage Type',
    bucketName: 'Bucket Name',
    bucketNamePlaceholder: 'Enter Bucket name',
    pathPrefix: 'Path Prefix',
    pathPrefixPlaceholder: 'E.g.: images',
    secretId: 'Secret ID',
    secretIdPlaceholder: 'Enter COS Secret ID',
    secretKey: 'Secret Key',
    secretKeyPlaceholder: 'Enter COS Secret Key',
    region: 'Region',
    regionPlaceholder: 'E.g.: ap-beijing',
    appId: 'App ID',
    appIdPlaceholder: 'Enter App ID',
    // Multimodal function testing
    functionTest: 'Function Test',
    testDescription: 'Upload an image to test the model\'s image description and text recognition functions',
    selectImage: 'Select Image',
    startTest: 'Start Test',
    testResult: 'Test Result',
    imageDescription: 'Image Description:',
    textRecognition: 'Text Recognition:',
    processingTime: 'Processing Time:',
    testFailed: 'Test Failed',
    multimodalProcessingFailed: 'Multimodal processing failed',
    // Document splitting
    documentSplittingConfig: 'Document Splitting Configuration',
    splittingStrategy: 'Splitting Strategy',
    balancedMode: 'Balanced Mode',
    balancedModeDesc: 'Chunk size: 1000 / Overlap: 200',
    precisionMode: 'Precision Mode',
    precisionModeDesc: 'Chunk size: 512 / Overlap: 100',
    contextMode: 'Context Mode',
    contextModeDesc: 'Chunk size: 2048 / Overlap: 400',
    custom: 'Custom',
    customDesc: 'Configure parameters manually',
    chunkSize: 'Chunk Size',
    chunkOverlap: 'Chunk Overlap',
    separatorSettings: 'Separator Settings',
    selectOrCustomSeparators: 'Select or customize separators',
    characters: 'characters',
    separatorParagraph: 'Paragraph separator (\\n\\n)',
    separatorNewline: 'Newline (\\n)',
    separatorPeriod: 'Period (。)',
    separatorExclamation: 'Exclamation mark (！)',
    separatorQuestion: 'Question mark (？)',
    separatorSemicolon: 'Semicolon (;)',
    separatorChineseSemicolon: 'Chinese semicolon (；)',
    separatorComma: 'Comma (,)',
    separatorChineseComma: 'Chinese comma (，)',
    // Entity and relation extraction
    entityRelationExtraction: 'Entity and Relation Extraction',
    enableEntityRelationExtraction: 'Enable entity and relation extraction',
    relationTypeConfig: 'Relation Type Configuration',
    relationType: 'Relation Type',
    generateRandomTags: 'Generate Random Tags',
    completeModelConfig: 'Please complete model configuration',
    systemWillExtract: 'The system will extract corresponding entities and relations from the text according to the selected relation types',
    extractionExample: 'Extraction Example',
    sampleText: 'Sample Text',
    sampleTextPlaceholder: 'Enter text for analysis, e.g.: "Red Mansion", also known as "Dream of the Red Chamber", is one of the four great classical novels of Chinese literature, written by Cao Xueqin during the Qing Dynasty...',
    generateRandomText: 'Generate Random Text',
    entityList: 'Entity List',
    nodeName: 'Node Name',
    nodeNamePlaceholder: 'Node name',
    addAttribute: 'Add Attribute',
    attributeValue: 'Attribute Value',
    attributeValuePlaceholder: 'Attribute value',
    addEntity: 'Add Entity',
    completeEntityInfo: 'Please complete entity information',
    relationConnection: 'Relation Connection',
    selectEntity: 'Select Entity',
    addRelation: 'Add Relation',
    completeRelationInfo: 'Please complete relation information',
    startExtraction: 'Start Extraction',
    extracting: 'Extracting...',
    defaultExample: 'Default Example',
    clearExample: 'Clear Example',
    // Buttons and messages
    updateKnowledgeBaseSettings: 'Update Knowledge Base Settings',
    updateConfigInfo: 'Update Configuration Information',
    completeConfig: 'Complete Configuration',
    waitForDownloads: 'Please wait for all Ollama models to finish downloading before updating configuration',
    completeModelConfigInfo: 'Please complete model configuration information',
    knowledgeBaseIdMissing: 'Knowledge base ID is missing',
    knowledgeBaseSettingsUpdateSuccess: 'Knowledge base settings updated successfully',
    configUpdateSuccess: 'Configuration updated successfully',
    systemInitComplete: 'System initialization completed',
    operationFailed: 'Operation failed',
    updateKnowledgeBaseInfoFailed: 'Failed to update knowledge base basic information',
    knowledgeBaseIdMissingCannotSave: 'Knowledge base ID is missing, cannot save configuration',
    operationFailedCheckNetwork: 'Operation failed, please check network connection',
    imageUploadSuccess: 'Image uploaded successfully, testing can begin',
    multimodalConfigIncomplete: 'Multimodal configuration incomplete, please complete multimodal configuration before uploading images',
    pleaseSelectImage: 'Please select an image',
    multimodalTestSuccess: 'Multimodal test successful',
    multimodalTestFailed: 'Multimodal test failed',
    pleaseEnterSampleText: 'Please enter sample text',
    pleaseEnterRelationType: 'Please enter relation type',
    pleaseEnterLLMModelConfig: 'Please enter LLM large language model configuration',
    noValidNodesExtracted: 'No valid nodes extracted',
    noValidRelationsExtracted: 'No valid relations extracted',
    extractionFailedCheckNetwork: 'Extraction failed, please check network or text format',
    generateFailedRetry: 'Generation failed, please try again',
    pleaseCheckForm: 'Please check form correctness',
    detectionSuccessful: 'Detection successful, dimension automatically filled as',
    detectionFailed: 'Detection failed',
    detectionFailedCheckConfig: 'Detection failed, please check configuration',
    modelDownloadSuccess: 'Model downloaded successfully',
    modelDownloadFailed: 'Model download failed',
    downloadStartFailed: 'Download start failed',
    queryProgressFailed: 'Progress query failed',
    checkOllamaStatusFailed: 'Ollama status check failed',
    getKnowledgeBaseInfoFailed: 'Failed to get knowledge base information',
    textRelationExtractionFailed: 'Text relation extraction failed',
    // Validation
    pleaseEnterKnowledgeBaseName: 'Please enter knowledge base name',
    knowledgeBaseNameLength: 'Knowledge base name length must be 1-50 characters',
    knowledgeBaseDescriptionLength: 'Knowledge base description cannot exceed 200 characters',
    pleaseEnterLLMModelName: 'Please enter LLM model name',
    pleaseEnterBaseURL: 'Please enter BaseURL',
    pleaseEnterEmbeddingModelName: 'Please enter embedding model name',
    pleaseEnterEmbeddingDimension: 'Please enter embedding dimension',
    dimensionMustBeInteger: 'Dimension must be a valid integer, usually 768, 1024, 1536, 3584, etc.',
    pleaseEnterTextContent: 'Please enter text content',
    textContentMinLength: 'Text content must contain at least 10 characters',
    pleaseEnterValidTag: 'Please enter a valid tag',
    tagAlreadyExists: 'This tag already exists',
    // Additional translations for InitializationContent.vue
    checkFailed: 'Check failed',
    startingDownload: 'Starting download...',
    downloadStarted: 'Download started',
    model: 'Model',
    startModelDownloadFailed: 'Failed to start model download',
    downloadCompleted: 'Download completed',
    downloadFailed: 'Download failed',
    knowledgeBaseSettingsModeMissingId: 'Knowledge base settings mode missing ID',
    completeEmbeddingConfig: 'Please complete embedding configuration first',
    detectionSuccess: 'Detection successful,',
    dimensionAutoFilled: 'dimension automatically filled:',
    checkFormCorrectness: 'Please check form correctness',
    systemInitializationCompleted: 'System initialization completed',
    generationFailedRetry: 'Generation failed, please try again',
    chunkSizeDesc: 'Size of each text chunk. Larger chunks preserve more context but may reduce search accuracy.',
    chunkOverlapDesc: 'Number of characters overlapping between adjacent chunks. Helps maintain context at chunk boundaries.',
    selectRelationType: 'Select relation type'
  },
  auth: {
    login: 'Login',
    logout: 'Logout',
    username: 'Username',
    email: 'Email',
    password: 'Password',
    confirmPassword: 'Confirm Password',
    rememberMe: 'Remember Me',
    forgotPassword: 'Forgot Password?',
    loginSuccess: 'Login successful!',
    loginFailed: 'Login failed',
    loggingIn: 'Logging in...',
    register: 'Register',
    registering: 'Registering...',
    createAccount: 'Create Account',
    haveAccount: 'Already have an account?',
    noAccount: 'Don\'t have an account?',
    backToLogin: 'Back to Login',
    registerNow: 'Register Now',
    registerSuccess: 'Registration successful! The system has created an exclusive tenant for you, please login',
    registerFailed: 'Registration failed',
    subtitle: 'Document understanding and semantic search framework based on large models',
    registerSubtitle: 'The system will create an exclusive tenant for you after registration',
    emailPlaceholder: 'Enter email address',
    passwordPlaceholder: 'Enter password (8-32 characters, including letters and numbers)',
    confirmPasswordPlaceholder: 'Enter password again',
    usernamePlaceholder: 'Enter username',
    emailRequired: 'Enter email address',
    emailInvalid: 'Enter correct email format',
    passwordRequired: 'Enter password',
    passwordMinLength: 'Password must be at least 8 characters',
    passwordMaxLength: 'Password cannot exceed 32 characters',
    passwordMustContainLetter: 'Password must contain letters',
    passwordMustContainNumber: 'Password must contain numbers',
    usernameRequired: 'Enter username',
    usernameMinLength: 'Username must be at least 2 characters',
    usernameMaxLength: 'Username cannot exceed 20 characters',
    usernameInvalid: 'Username can only contain letters, numbers, underscores and Chinese characters',
    confirmPasswordRequired: 'Confirm password',
    passwordMismatch: 'Entered passwords do not match',
    loginError: 'Login error, please check email or password',
    loginErrorRetry: 'Login error, please try again later',
    registerError: 'Registration error, please try again later',
    forgotPasswordNotAvailable: 'Password recovery function is temporarily unavailable, please contact administrator'
  },
  authStore: {
    errors: {
      parseUserFailed: 'Failed to parse user information',
      parseTenantFailed: 'Failed to parse tenant information',
      parseKnowledgeBasesFailed: 'Failed to parse knowledge base list',
      parseCurrentKnowledgeBaseFailed: 'Failed to parse current knowledge base'
    }
  },
  common: {
    confirm: 'Confirm',
    cancel: 'Cancel',
    save: 'Save',
    delete: 'Delete',
    edit: 'Edit',
    default: 'Default',
    create: 'Create',
    search: 'Search',
    filter: 'Filter',
    export: 'Export',
    import: 'Import',
    upload: 'Upload',
    download: 'Download',
    refresh: 'Refresh',
    loading: 'Loading...',
    noData: 'No data',
    noMoreData: 'All content loaded',
    error: 'Error',
    success: 'Success',
    warning: 'Warning',
    info: 'Information',
    selectAll: 'Select All',
    yes: 'Yes',
    no: 'No',
    ok: 'OK',
    close: 'Close',
    back: 'Back',
    next: 'Next',
    finish: 'Finish',
    all: 'All',
    reset: 'Reset',
    clear: 'Clear',
    website: 'Official Website',
    on: 'On',
    off: 'Off',
    resetToDefault: 'Reset to default',
    confirmDelete: 'Confirm Delete',
    deleteSuccess: 'Deleted successfully',
    deleteFailed: 'Delete failed',
  },
  file: {
    upload: 'Upload File',
    uploadSuccess: 'File uploaded successfully',
    uploadFailed: 'File upload failed',
    delete: 'Delete File',
    deleteSuccess: 'File deleted successfully',
    deleteFailed: 'File deletion failed',
    download: 'Download File',
    preview: 'Preview',
    unsupportedFormat: 'Unsupported file format',
    maxSizeExceeded: 'Maximum file size exceeded',
    selectFile: 'Select File'
  },
  manualEditor: {
    placeholders: {
      heading: 'Heading {level}',
      listItem: 'List item',
      taskItem: 'Task item',
      quote: 'Quoted text',
      code: 'Code content',
      linkText: 'Link text',
      imageAlt: 'Description',
      bold: 'Bold text',
      italic: 'Italic text',
      strike: 'Strikethrough',
      inlineCode: 'code'
    },
    table: {
      column1: 'Column 1',
      column2: 'Column 2',
      cell: 'Content'
    },
    toolbar: {
      bold: 'Bold',
      italic: 'Italic',
      strike: 'Strikethrough',
      inlineCode: 'Inline code',
      heading1: 'Heading 1',
      heading2: 'Heading 2',
      heading3: 'Heading 3',
      bulletList: 'Bullet list',
      orderedList: 'Numbered list',
      taskList: 'Task list',
      blockquote: 'Blockquote',
      codeBlock: 'Code block',
      link: 'Insert link',
      image: 'Insert image',
      table: 'Insert table',
      horizontalRule: 'Horizontal rule'
    },
    view: {
      toggleToEdit: 'Switch to edit view',
      toggleToPreview: 'Switch to preview view',
      editLabel: 'Back to edit',
      previewLabel: 'Preview content'
    },
    preview: {
      empty: 'No content yet'
    },
    title: {
      edit: 'Edit Markdown Knowledge',
      create: 'Create Markdown Knowledge'
    },
    labels: {
      currentKnowledgeBase: 'Current knowledge base'
    },
    defaultTitlePrefix: 'New Document',
    error: {
      fetchDetailFailed: 'Failed to fetch knowledge details',
      saveFailed: 'Save failed, please try again later'
    },
    warning: {
      selectKnowledgeBase: 'Please select a target knowledge base',
      enterTitle: 'Please enter a knowledge title',
      enterContent: 'Please enter knowledge content',
      contentTooShort: 'Content is too short. Please add more information before publishing'
    },
    success: {
      draftSaved: 'Draft saved',
      published: 'Knowledge published and indexing started'
    },
    form: {
      knowledgeBaseLabel: 'Target knowledge base',
      knowledgeBasePlaceholder: 'Select knowledge base',
      titleLabel: 'Knowledge title',
      titlePlaceholder: 'Enter title',
      contentPlaceholder: 'Supports Markdown. Use # headings, lists, code blocks, etc.'
    },
    noDocumentKnowledgeBases: 'No document-type knowledge bases available. Please create one first',
    status: {
      draftTag: 'Status: Draft',
      publishedTag: 'Status: Published',
      lastUpdated: 'Last updated: {time}'
    },
    loading: {
      content: 'Loading content...',
      preparing: 'Preparing editor...'
    },
    actions: {
      cancel: 'Cancel',
      saveDraft: 'Save Draft',
      publish: 'Publish'
    }
  },
  input: {
    addModel: 'Add Model',
    placeholder: 'Ask questions based on the knowledge base',
    agentMode: 'Agent Mode',
    normalMode: 'Normal Mode',
    normalModeDesc: 'Knowledge base RAG Q&A',
    agentModeDesc: 'ReAct reasoning framework with multi-step thinking',
    agentNotReadyTooltip: 'Agent is not ready. Please finish configuration first.',
    agentNotReadyDetail: 'Agent is not ready. Please configure the following: {reasons}',
    agentMissingAllowedTools: 'Allowed tools',
    agentMissingSummaryModel: 'Chat Model (Summary Model)',
    agentMissingRerankModel: 'Rerank Model',
    goToSettings: 'Go to settings →',
    webSearch: {
      toggleOn: 'Enable Web Search',
      toggleOff: 'Disable Web Search',
      notConfigured: 'Web search engine not configured'
    },
    knowledgeBase: 'Knowledge Base',
    knowledgeBaseWithCount: 'Knowledge Base ({count})',
    notConfigured: 'Not configured',
    model: 'Model',
    remote: 'Remote',
    noModel: 'No available models',
    stopGeneration: 'Stop Generation',
    send: 'Send',
    thinkingLabel: 'Thinking:',
    messages: {
      enterContent: 'Please enter content first!',
      selectKnowledge: 'Please select a knowledge base first!',
      replying: 'Currently replying, please try again later!',
      agentSwitchedOn: 'Switched to Agent Mode',
      agentSwitchedOff: 'Switched to Normal Mode',
      agentEnabled: 'Agent Mode enabled',
      agentDisabled: 'Agent Mode disabled',
      agentNotReadyDetail: 'Agent is not ready. Please configure the following: {reasons}',
      agentMissingAllowedTools: 'Allowed tools',
      agentMissingSummaryModel: 'Chat Model (Summary Model)',
      agentMissingRerankModel: 'Rerank Model',
      webSearchNotConfigured: 'Web search engine is not configured. Please configure a provider and credentials in settings.',
      webSearchEnabled: 'Web search enabled',
      webSearchDisabled: 'Web search disabled',
      sessionMissing: 'Session ID does not exist',
      messageMissing: 'Unable to get message ID. Please refresh the page and try again.',
      stopSuccess: 'Generation stopped',
      stopFailed: 'Failed to stop. Please try again.'
    }
  },
  createChat: {
    title: 'Knowledge-base Q&A - AI Assistant',
    newSessionTitle: 'New Session',
    messages: {
      selectKnowledgeBase: 'Please select a knowledge base first',
      createFailed: 'Failed to create session',
      createError: 'Failed to create session, please try again later'
    }
  },
  knowledgeList: {
    create: 'Create Knowledge Base',
    createFAQ: 'Create FAQ Knowledge Base',
    subtitle: 'Manage and organize your knowledge bases, supporting document-based and FAQ-based knowledge bases',
    uninitializedBanner: 'Some knowledge bases are not initialized. Configure model information in settings before adding documents.',
    empty: {
      title: 'No knowledge bases yet',
      description: 'Click "Create Knowledge Base" in the top-right corner to add your first one.'
    },
    delete: {
      confirmTitle: 'Delete Confirmation',
      confirmMessage: 'Are you sure you want to delete the knowledge base "{name}"? This action cannot be undone.',
      confirmButton: 'Delete'
    },
    messages: {
      deleted: 'Knowledge base deleted',
      deleteFailed: 'Failed to delete knowledge base'
    },
    features: {
      knowledgeGraph: 'Knowledge Graph Enabled',
      multimodal: 'Multimodal Enabled',
      questionGeneration: 'Question Generation Enabled'
    },
    processing: 'Processing import task',
    processingDocuments: 'Processing {count} documents',
    stats: {
      documents: 'Document Count',
      faqEntries: 'FAQ Entries',
      chunks: 'Chunk Count'
    },
    uploadProgress: {
      uploadingTitle: 'Uploading folder documents to "{name}"',
      detail: '{completed}/{total} files finished',
      keepPageOpen: 'Please keep this page open while files upload.',
      completedTitle: 'Upload finished for "{name}"',
      completedDetail: 'All {total} files uploaded. Refreshing list to show parsing status...',
      refreshing: 'Refreshing list to show parsing status...',
      errorTip: 'Some files failed to upload. Please check the notifications.',
      unknownKb: 'Knowledge Base {id}'
    }
  },
  knowledgeEditor: {
    titleCreate: 'Create Knowledge Base',
    titleEdit: 'Knowledge Base Settings',
    sidebar: {
      basic: 'Basic Information',
      models: 'Model Configuration',
      chunking: 'Chunking Settings',
      advanced: 'Advanced Settings',
      faq: 'FAQ Settings',
      graph: 'Knowledge Graph'
    },
    basic: {
      title: 'Basic Information',
      description: 'Configure the knowledge base name and description',
      typeLabel: 'Knowledge Base Type',
      typeDocument: 'Document-based',
      typeFAQ: 'FAQ Q&A',
      typeDescription: 'FAQ suits structured Q&A datasets; document type supports file parsing and chunking.',
      nameLabel: 'Knowledge Base Name',
      namePlaceholder: 'Enter knowledge base name',
      descriptionLabel: 'Knowledge Base Description',
      descriptionPlaceholder: 'Enter knowledge base description (optional)'
    },
    buttons: {
      create: 'Create Knowledge Base',
      save: 'Save Configuration'
    },
    messages: {
      loadModelsFailed: 'Failed to load model list',
      loadDataFailed: 'Failed to load knowledge base data',
      notFound: 'Knowledge base not found',
      nameRequired: 'Please enter the knowledge base name',
      embeddingRequired: 'Please select an embedding model',
      summaryRequired: 'Please select a summary model',
      multimodalInvalid: 'Multimodal configuration validation failed',
      createSuccess: 'Knowledge base created successfully',
      createFailed: 'Failed to create knowledge base',
      missingId: 'Knowledge base ID is missing',
      buildDataFailed: 'Failed to construct submission data',
      updateSuccess: 'Configuration saved successfully',
      indexModeRequired: 'Please select an indexing mode for FAQ knowledge bases'
    },
    document: {
      title: 'Document Management',
      subtitle: 'Click or drag-and-drop to upload documents; multiple formats are parsed automatically with intelligent chunking for a searchable knowledge base',
    },
    faq: {
      title: 'FAQ Configuration',
      subtitle: 'Manage FAQ entries with batch import, edit, and search testing',
      description: 'Configure indexing strategy and guidance for FAQ-style knowledge bases',
      indexModeLabel: 'Indexing Mode',
      indexModeDescription: 'Question-only indexing improves precision, question+answer improves recall.',
      questionIndexModeLabel: 'Question Indexing Mode',
      questionIndexModeDescription: 'Combined: Standard and similar questions are indexed together. Separate: Each question is indexed independently for more precise retrieval but requires more storage.',
      entryGuide: 'Each FAQ entry contains a primary question, similar questions, negative examples, and multiple answers. Manage them in the FAQ knowledge base detail view.',
      tagDesc: 'Select category for FAQ entries',
      modes: {
        questionOnly: 'Questions only',
        questionAnswer: 'Question + answer',
        combined: 'Combined',
        separate: 'Separate'
      },
      standardQuestion: 'Primary Question',
      answers: 'Answers',
      similarQuestions: 'Similar Questions',
      negativeQuestions: 'Negative Examples',
      categoryLabel: 'FAQ Category',
      categoryButton: 'Switch Category',
      editorCreate: 'Create FAQ Entry',
      editorEdit: 'Edit FAQ Entry',
      addAnswer: 'Add Answer',
      answerPlaceholder: 'Enter answer content, supports multi-line text, press Ctrl+Enter or click button to add',
      similarPlaceholder: 'Enter similar question and click plus icon to add',
      negativePlaceholder: 'Enter negative example and click plus icon to add',
      answerRequired: 'Please provide at least one answer',
      noAnswer: 'No answers',
      noSimilar: 'No similar questions',
      noNegative: 'No negative examples',
      emptyTitle: 'No FAQ entries',
      emptyDesc: 'Click "Create FAQ Entry" above to get started',
      searchPlaceholder: 'Search standard questions...',
      searchTest: 'Search Test',
      searchTestTitle: 'FAQ Search Test',
      queryLabel: 'Query',
      queryPlaceholder: 'Enter a question to search',
      vectorThresholdLabel: 'Vector Similarity Threshold',
      vectorThresholdDesc: 'Range 0-1, default 0.7',
      keywordThresholdLabel: 'Keyword Match Threshold',
      keywordThresholdDesc: 'Range 0-1, default 0.5',
      matchCountLabel: 'Result Count',
      matchCountDesc: 'Range 1-50, default 10',
      searchButton: 'Search',
      searching: 'Searching...',
      searchResults: 'Search Results',
      noResults: 'No matching FAQ entries found',
      score: 'Similarity',
      matchType: 'Match Type',
      matchTypeEmbedding: 'Vector Match',
      matchTypeKeywords: 'Keyword Match',
      similarityThresholdLabel: 'Similarity Threshold',
      statusEnabled: 'Enabled',
      statusDisabled: 'Disabled',
      statusEnableSuccess: 'FAQ entry enabled',
      statusDisableSuccess: 'FAQ entry disabled',
      statusUpdateFailed: 'Failed to update status',
      batchOperations: 'Batch Operations',
      batchUpdateTag: 'Batch Update Category',
      batchUpdateTagTip: 'Set category for {count} selected entries',
      batchEnable: 'Batch Enable',
      batchDisable: 'Batch Disable',
    },
    faqImport: {
      title: 'Batch Import FAQ',
      modeLabel: 'Import Mode',
      appendMode: 'Append',
      replaceMode: 'Replace existing entries',
      fileLabel: 'Select File',
      fileTip: 'Supports JSON / CSV / Excel. CSV/Excel headers: 分类(必填), 问题(必填), 相似问题(选填-多个用##分隔), 反例问题(选填-多个用##分隔), 机器人回答(必填-多个用##分隔), 是否全部回复(选填-默认FALSE), 是否停用(选填-默认FALSE), 是否禁止被推荐(选填-默认False 可被推荐). Also supports old format: standard_question, answers, similar_questions, negative_questions',
      clickToUpload: 'Click to upload file',
      dragDropTip: 'or drag and drop file here',
      importButton: 'Import FAQ',
      deleteSelected: 'Delete Selected',
      deleteSuccess: 'Selected entries deleted',
      previewCount: '{count} entries parsed',
      previewMore: '{count} more entries not shown',
      importSuccess: 'Import completed',
      parseFailed: 'Failed to parse file',
      invalidJSON: 'Invalid JSON format',
      unsupportedFormat: 'Unsupported file format',
      selectFile: 'Please select a file to import first',
      downloadExample: 'Download Example',
      downloadExampleJSON: 'Download JSON Example',
      downloadExampleCSV: 'Download CSV Example',
      downloadExampleExcel: 'Download Excel Example',
    },
    models: {
      title: 'Model Configuration',
      description: 'Select appropriate AI models for the knowledge base',
      llmLabel: 'LLM Model',
      llmDesc: 'Large language model used for summarization and abstract generation (optional)',
      llmPlaceholder: 'Select an LLM model (optional)',
      embeddingLabel: 'Embedding Model',
      embeddingDesc: 'Embedding model used for text vectorization',
      embeddingPlaceholder: 'Select an embedding model',
      embeddingLocked: 'Knowledge base already has files. Embedding model cannot be modified',
      rerankLabel: 'ReRank Model',
      rerankDesc: 'Model for re-ranking search results (optional)',
      rerankPlaceholder: 'Select a ReRank model (optional)'
    },
    chunking: {
      title: 'Chunking Settings',
      description: 'Configure document chunking parameters to improve retrieval quality',
      sizeLabel: 'Chunk Size',
      sizeDescription: 'Controls the number of characters in each chunk (100-4000)',
      characters: 'characters',
      overlapLabel: 'Chunk Overlap',
      overlapDescription: 'Number of overlapping characters between adjacent chunks (0-500)',
      separatorsLabel: 'Separators',
      separatorsDescription: 'Separators used when chunking documents',
      separatorsPlaceholder: 'Select separators',
      separators: {
        doubleNewline: 'Double newline (\
\
)',
        singleNewline: 'Single newline (\
)',
        periodCn: 'Chinese period (。)',
        exclamationCn: 'Exclamation mark (！)',
        questionCn: 'Question mark (？)',
        semicolonCn: 'Chinese semicolon (；)',
        semicolonEn: 'Semicolon (;)',
        space: 'Space ( )'
      }
    },
    advanced: {
      title: 'Advanced Settings',
      description: 'Configure question generation, multimodal features',
      questionGeneration: {
        label: 'AI Question Generation',
        description: 'Generate related questions for each chunk using LLM during document parsing to improve retrieval recall. Enabling this will increase document parsing time.',
        countLabel: 'Question Count',
        countDescription: 'Number of questions to generate per document chunk (1-10)',
      },
      multimodal: {
        label: 'Multimodal Feature',
        description: 'Enable understanding of multimodal content such as images and videos',
        vllmLabel: 'VLLM Vision Model',
        vllmDescription: 'Vision-language model required for multimodal understanding',
        vllmPlaceholder: 'Select a VLLM model (required)',
        storageTitle: 'Storage Configuration',
        storageTypeLabel: 'Storage Type',
        storageTypeDescription: 'Choose the storage solution for multimodal files (MinIO or Tencent Cloud COS)',
        storageTypeOptions: {
          minio: 'MinIO',
          cos: 'Tencent Cloud COS'
        },
        minioDisabledWarning: 'MinIO is not enabled. Automatically switched to Tencent Cloud COS. To use MinIO, please enable it in system configuration first.',
        minio: {
          bucketLabel: 'Bucket Name',
          bucketDescription: 'Name of the MinIO bucket (required)',
          bucketPlaceholder: 'Enter bucket name (required)',
          useSslLabel: 'Use SSL',
          useSslDescription: 'Whether to use SSL connection',
          pathPrefixLabel: 'Path Prefix',
          pathPrefixDescription: 'Optional prefix for stored file paths',
          pathPrefixPlaceholder: 'Enter path prefix'
        },
        cos: {
          secretIdLabel: 'SecretId',
          secretIdDescription: 'Tencent Cloud API secret ID (required)',
          secretIdPlaceholder: 'Enter SecretId (required)',
          secretKeyLabel: 'SecretKey',
          secretKeyDescription: 'Tencent Cloud API secret key (required)',
          secretKeyPlaceholder: 'Enter SecretKey (required)',
          regionLabel: 'Region',
          regionDescription: 'Region where the COS bucket is located (required)',
          regionPlaceholder: 'e.g. ap-guangzhou (required)',
          bucketLabel: 'Bucket Name',
          bucketDescription: 'COS bucket name (required)',
          bucketPlaceholder: 'Enter bucket name (required)',
          appIdLabel: 'AppId',
          appIdDescription: 'Tencent Cloud application ID (required)',
          appIdPlaceholder: 'Enter AppId (required)',
          pathPrefixLabel: 'Path Prefix',
          pathPrefixDescription: 'Optional prefix for stored file paths',
          pathPrefixPlaceholder: 'Enter path prefix'
        }
      }
    }
  },
  chat: {
    title: 'Chat',
    newChat: 'New Chat',
    inputPlaceholder: 'Enter your message...',
    send: 'Send',
    thinking: 'Thinking...',
    regenerate: 'Regenerate',
    copy: 'Copy',
    delete: 'Delete',
    reference: 'Reference',
    noMessages: 'No messages',
    // Additional translations for chat components
    waitingForAnswer: 'Waiting for answer...',
    cannotAnswer: 'Sorry, I cannot answer this question.',
    summarizingAnswer: 'Summarizing answer...',
    loading: 'Loading...',
    referencedContent: '{count} related materials used',
    deepThinking: 'Deep thinking completed',
    knowledgeBaseQandA: 'Knowledge Base Q&A',
    askKnowledgeBase: 'Ask the knowledge base',
    sourcesCount: '{count} sources',
    pleaseEnterContent: 'Please enter content!',
    pleaseUploadKnowledgeBase: 'Please upload knowledge base first!',
    replyingPleaseWait: 'Replying, please try again later!',
    createSessionFailed: 'Failed to create session',
    createSessionError: 'Session creation error',
    unableToGetKnowledgeBaseId: 'Unable to get knowledge base ID',
    summaryInProgress: 'Summarizing answer…',
    thinkingAlt: 'Thinking in progress',
    deepThoughtCompleted: 'Deep thinking completed',
    deepThoughtAlt: 'Deep thinking finished',
    referencesTitle: 'Referenced {count} related item(s)',
    referenceIconAlt: 'Reference materials icon',
    chunkIdLabel: 'Chunk ID:',
    documentIdLabel: 'Document ID:',
    noPlanSteps: 'No detailed steps provided',
    chunkIndexLabel: 'Chunk #{index}',
    chunkPositionLabel: '(Position: {position})',
    noRelatedChunks: 'No related chunks found',
    noSearchResults: 'No search results found',
    relevanceHigh: 'High relevance',
    relevanceMedium: 'Medium relevance',
    relevanceLow: 'Low relevance',
    relevanceWeak: 'Weak relevance',
    webSearchNoResults: 'No web search results found',
    otherSource: 'Other sources',
    webGroupIntro: 'The following {count} items are from',
    graphConfigTitle: 'Graph Configuration',
    entityTypesLabel: 'Entity types:',
    relationTypesLabel: 'Relation types:',
    graphResultsHeader: '{count} related results found',
    graphNoResults: 'No related graph information found',
    unknownLink: 'Unknown link',
    contentLengthLabel: 'Length {value}',
    notProvided: 'Not provided',
    promptLabel: 'Prompt',
    errorMessageLabel: 'Error message',
    summaryLabel: 'Summary',
    rawTextLabel: 'Raw text',
    collapseRaw: 'Collapse original',
    expandRaw: 'Expand original',
    noWebContent: 'No web content fetched',
    lengthChars: '{value} characters',
    lengthThousands: '{value}k characters',
    lengthTenThousands: '{value} ten-thousand characters',
    sqlQueryExecuted: 'Executed SQL query:',
    sqlResultsLabel: 'Results:',
    rowsLabel: 'rows',
    columnsLabel: 'columns',
    noDatabaseRecords: 'No matching records found',
    nullValuePlaceholder: '<NULL>',
    documentTitleLabel: 'Document title:',
    chunkCountLabel: 'Chunk count:',
    chunkCountValue: '{count} chunks',
    documentDescriptionLabel: 'Description:',
    documentStatusLabel: 'Status:',
    documentSourceLabel: 'Source:',
    documentFileLabel: 'File:',
    documentMetadataLabel: 'Metadata',
    documentInfoSummaryLabel: 'Document info',
    documentInfoCount: '{count} of {requested} documents retrieved',
    documentInfoErrors: 'Errors',
    documentInfoEmpty: 'No document information available',
    statusDescription: 'Status notes',
    statusIndexed: 'Document is indexed and searchable',
    statusSearchable: 'Search tools can locate document content',
    statusChunkDetailAvailable: 'Use get_chunk_detail to view chunk details',
    positionLabel: 'Position:',
    chunkPositionValue: 'Chunk #{index}',
    contentLengthLabelSimple: 'Content length:',
    fullContentLabel: 'Full content',
    copyContent: 'Copy content',
    knowledgeBaseCount: '{count} knowledge bases',
    noKnowledgeBases: 'No knowledge bases available',
    enterDescription: 'Enter description',
    rawOutputLabel: 'Raw output',
    selectKnowledgeBaseWarning: 'Please select at least one knowledge base',
    processError: 'Processing error'
  },
  tenant: {
    title: 'Tenant Information',
    currentTenant: 'Current Tenant',
    switchTenant: 'Switch Tenant',
    sectionDescription: 'View detailed configuration for the tenant',
    apiDocument: 'API Document',
    name: 'Tenant Name',
    id: 'Tenant ID',
    createdAt: 'Created At',
    updatedAt: 'Updated At',
    status: 'Status',
    active: 'Active',
    inactive: 'Inactive',
    // Additional translations for TenantInfo.vue
    systemInfo: 'System Information',
    viewSystemInfo: 'View system version and user account configuration information',
    version: 'Version',
    buildTime: 'Build Time',
    goVersion: 'Go Version',
    userInfo: 'User Information',
    userId: 'User ID',
    username: 'Username',
    email: 'Email',
    tenantInfo: 'Tenant Information',
    tenantId: 'Tenant ID',
    tenantName: 'Tenant Name',
    description: 'Description',
    business: 'Business',
    noDescription: 'No description',
    noBusiness: 'None',
    statusActive: 'Active',
    statusInactive: 'Not activated',
    statusSuspended: 'Suspended',
    statusUnknown: 'Unknown',
    apiKey: 'API Key',
    keepApiKeySafe: 'Please keep your API Key safe, do not disclose it in public places or code repositories',
    storageInfo: 'Storage Information',
    storageQuota: 'Storage Quota',
    used: 'Used',
    usage: 'Usage',
    apiDevDocs: 'API Developer Documentation',
    useApiKey: 'Use your API Key to start development, view complete API documentation and code examples.',
    viewApiDoc: 'View API Documentation',
    loadingAccountInfo: 'Loading account information...',
    loadingInfo: 'Loading information...',
    loadFailed: 'Load failed',
    retry: 'Retry',
    apiKeyCopied: 'API Key copied to clipboard',
    unknown: 'Unknown',
    formatError: 'Format error',
    searchPlaceholder: 'Search by name or enter tenant ID...',
    searchHint: 'Search by name or enter tenant ID directly',
    noMatch: 'No matching tenants found',
    switchSuccess: 'Tenant switched successfully',
    loadTenantsFailed: 'Failed to load tenant list',
    loading: 'Loading...',
    loadMore: 'Load more',
    details: {
      idLabel: 'Tenant ID',
      idDescription: 'Unique identifier of your tenant',
      nameLabel: 'Tenant Name',
      nameDescription: 'Name of your tenant',
      descriptionLabel: 'Tenant Description',
      descriptionDescription: 'Detailed description of the tenant',
      businessLabel: 'Tenant Business',
      businessDescription: 'Business domain that the tenant belongs to',
      statusLabel: 'Tenant Status',
      statusDescription: 'Current operational status of the tenant',
      createdAtLabel: 'Tenant Creation Time',
      createdAtDescription: 'Time when the tenant was created'
    },
    storage: {
      quotaLabel: 'Storage Quota',
      quotaDescription: 'Total storage capacity allocated to the tenant',
      usedLabel: 'Used Storage',
      usedDescription: 'Storage space that has been used',
      usageLabel: 'Storage Usage',
      usageDescription: 'Percentage of storage capacity used'
    },
    messages: {
      fetchFailed: 'Failed to fetch tenant information',
      networkError: 'Network error, please try again later'
    },
    api: {
      title: 'API Information',
      description: 'View and manage your API key',
      keyLabel: 'API Key',
      keyDescription: 'Secret used for API requests. Keep it safe.',
      copyTitle: 'Copy API Key',
      docLabel: 'API Documentation',
      docDescription: 'View complete API documentation and examples,',
      openDoc: 'Open documentation',
      userSectionTitle: 'User Information',
      userIdLabel: 'User ID',
      userIdDescription: 'Your unique user identifier',
      usernameLabel: 'Username',
      usernameDescription: 'Your login username',
      emailLabel: 'Email',
      emailDescription: 'Your registered email address',
      createdAtLabel: 'Registration Time',
      createdAtDescription: 'Time when the account was created',
      noKey: 'No API Key available',
      copySuccess: 'API Key copied to clipboard',
      copyFailed: 'Copy failed, please copy manually'
    }
  },
  system: {
    title: 'System Information',
    sectionDescription: 'View system version information and user account configuration',
    loadingInfo: 'Loading information...',
    retry: 'Retry',
    versionLabel: 'System Version',
    versionDescription: 'Current version number of the system',
    buildTimeLabel: 'Build Time',
    buildTimeDescription: 'Time when the system was built',
    goVersionLabel: 'Go Version',
    goVersionDescription: 'Go language version used by the backend',
    keywordIndexEngineLabel: 'Keyword Index Engine',
    keywordIndexEngineDescription: 'Currently used keyword index engine',
    vectorStoreEngineLabel: 'Vector Store Engine',
    vectorStoreEngineDescription: 'Currently used vector store engine',
    graphDatabaseEngineLabel: 'Graph Database Engine',
    graphDatabaseEngineDescription: 'Currently used graph database engine',
    unknown: 'Unknown',
    messages: {
      fetchFailed: 'Failed to fetch system information',
      networkError: 'Network error, please try again later'
    }
  },
  mcp: {
    testResult: {
      title: 'Test Result: {name}',
      connectionSuccess: 'Connection successful',
      connectionFailed: 'Connection failed',
      toolsTitle: 'Available tools',
      resourcesTitle: 'Available resources',
      descriptionLabel: 'Description',
      schemaLabel: 'Parameter schema',
      emptyDescription: 'This service did not provide tools or resources'
    }
  },
  error: {
    network: 'Network error',
    server: 'Server error',
    notFound: 'Not found',
    unauthorized: 'Unauthorized',
    forbidden: 'Access forbidden',
    unknown: 'Unknown error',
    tryAgain: 'Please try again'
  },
  model: {
    llmModel: 'LLM Model',
    embeddingModel: 'Embedding Model',
    rerankModel: 'Rerank Model',
    vlmModel: 'Multimodal Model',
    modelName: 'Model Name',
    modelProvider: 'Model Provider',
    modelUrl: 'Model URL',
    apiKey: 'API Key',
    testConnection: 'Test Connection',
    connectionSuccess: 'Connection successful',
    connectionFailed: 'Connection failed',
    dimension: 'Dimension',
    maxTokens: 'Max Tokens',
    temperature: 'Temperature',
    topP: 'Top P',
    selectModel: 'Select Model',
    customModel: 'Custom Model',
    builtinModel: 'Built-in Model',
    defaultTag: 'Default',
    addModelInSettings: 'Go to global settings to add models',
    loadFailed: 'Failed to load model list',
    selectModelPlaceholder: 'Select a model',
    searchPlaceholder: 'Search models...',
    editor: {
      addTitle: 'Add Model',
      editTitle: 'Edit Model',
      sourceLabel: 'Model Source',
      sourceLocal: 'Ollama (Local)',
      sourceRemote: 'Remote API',
      description: {
        chat: 'Configure large language models for conversations',
        embedding: 'Configure embedding models for text vectorization',
        rerank: 'Configure models for result re-ranking',
        vllm: 'Configure vision-language models for multimodal understanding',
        default: 'Configure model information'
      },
      modelNamePlaceholder: {
        local: 'e.g. llama2:latest',
        remote: 'e.g. gpt-4, claude-3-opus',
        localVllm: 'e.g. llava:latest',
        remoteVllm: 'e.g. gpt-4-vision-preview'
      },
      baseUrlLabel: 'Base URL',
      baseUrlPlaceholder: 'e.g. https://api.openai.com/v1',
      baseUrlPlaceholderVllm: 'e.g. http://localhost:11434/v1',
      apiKeyOptional: 'API Key (optional)',
      apiKeyPlaceholder: 'Enter API Key',
      connectionTest: 'Connection Test',
      testing: 'Testing...',
      testConnection: 'Test Connection',
      searchPlaceholder: 'Search models...',
      downloadLabel: 'Download: {keyword}',
      refreshList: 'Refresh List',
      dimensionLabel: 'Vector Dimension',
      dimensionPlaceholder: 'e.g. 1536',
      checkDimension: 'Detect Dimension',
      dimensionDetected: 'Detection succeeded. Vector dimension: {value}',
      dimensionFailed: 'Detection failed, please enter the dimension manually',
      remoteDimensionDetected: 'Detected vector dimension: {value}',
      dimensionHint: 'Model selected. Click "Detect Dimension" to fetch the vector dimension automatically.',
      loadModelListFailed: 'Failed to load model list',
      listRefreshed: 'List refreshed',
      fillModelAndUrl: 'Please fill in the model identifier and Base URL first',
      remoteBaseUrlRequired: 'Remote API type requires a Base URL',
      unsupportedModelType: 'Unsupported model type',
      connectionSuccess: 'Connection succeeded',
      connectionFailed: 'Connection failed',
      connectionConfigError: 'Connection failed, please check the configuration',
      downloadStarted: 'Started downloading {name}',
      downloadCompleted: '{name} downloaded successfully',
      downloadFailed: 'Failed to download {name}',
      downloadStartFailed: 'Failed to start download',
      ollamaUnavailable: 'Ollama service is unavailable, local models cannot be selected',
      goToOllamaSettings: 'Open Settings',
      validation: {
        modelNameRequired: 'Please enter the model name',
        modelNameEmpty: 'Model name cannot be empty',
        modelNameMax: 'Model name cannot exceed 100 characters',
        baseUrlRequired: 'Please enter the Base URL',
        baseUrlEmpty: 'Base URL cannot be empty',
        baseUrlInvalid: 'Invalid Base URL, please enter a valid URL'
      }
    }
  },
  language: {
    zhCN: '简体中文',
    enUS: 'English',
    ruRU: 'Русский',
    selectLanguage: 'Select Language',
    language: 'Language',
    languageDescription: 'Select interface display language',
    languageSaved: 'Language settings saved'
  },
  general: {
    title: 'General Settings',
    allSettings: 'All Settings',
    description: 'Configure language, appearance and other basic options',
    settings: 'Settings',
    close: 'Close Settings'
  },
  platform: {
    subtitle: 'Enterprise-level Intelligent Document Retrieval Framework',
    description: 'Making complex document understanding and precise retrieval simple',
    rag: 'RAG Enhanced Generation',
    hybridSearch: 'Hybrid Search',
    localDeploy: 'Local Deployment',
    multimodalParsing: 'Multimodal Document Parsing',
    hybridSearchEngine: 'Hybrid Search Engine',
    ragQandA: 'RAG Intelligent Q&A',
    independentTenant: 'Independent Tenant Space',
    fullApiAccess: 'Full API Access',
    knowledgeBaseManagement: 'Knowledge Base Management',  
    carousel: {
      agenticRagTitle: 'Agentic RAG',
      agenticRagDesc: 'Query rewriting + smart recall + re-ranking',
      hybridSearchTitle: 'Hybrid search strategy',
      hybridSearchDesc: 'BM25 + Vector + Knowledge Graph',
      smartDocRetrievalTitle: 'Intelligent document retrieval',
      smartDocRetrievalDesc: 'PDF/Word/Image multi-format parsing'
    }
  },
  time: {
    today: 'Today',
    yesterday: 'Yesterday',
    last7Days: 'Last 7 Days',
    last30Days: 'Last 30 Days',
    lastYear: 'Last Year',
    earlier: 'Earlier'
  },
  upload: {
    uploadDocument: 'Upload Document',
    uploadFolder: 'Upload Folder',
    onlineEdit: 'Online Edit',
    deleteRecord: 'Delete Record'
  },
  agentSettings: {
    title: 'Agent Settings',
    description: 'Configure the default behavior and parameters for the AI Agent. These settings apply to all chats with Agent mode enabled.',
    modelRecommendation: {
      title: 'Model Recommendation',
      content: 'For better Agent experience, we recommend using large language models with FunctionCalling support and long context windows, such as deepseek-v3.1-terminus',
    },
    status: {
      label: 'Agent Status',
      ready: 'Ready',
      notReady: 'Not Ready',
      hint: 'Once configuration is complete, the status will change to "Ready". You can then enable Agent mode in the chat.',
      missingThinkingModel: 'Thinking model',
      missingRerankModel: 'Rerank model',
      missingAllowedTools: 'Allowed tools',
      pleaseConfigure: 'Please configure {items}',
      goConfigureModels: 'Configure models →'
    },
    maxIterations: {
      label: 'Max Iterations',
      desc: 'Maximum reasoning steps when the Agent executes tasks'
    },
    thinkingModel: {
      label: 'Thinking Model',
      desc: 'LLM used for Agent reasoning and planning',
      hint: 'Requires a function-call-capable model'
    },
    rerankModel: {
      label: 'Rerank Model',
      desc: 'Re-rank search results and normalize relevance scores'
    },
    model: {
      placeholder: 'Search models...',
      addChat: 'Add a new chat model',
      addRerank: 'Add a new Rerank model'
    },
    temperature: {
      label: 'Temperature',
      desc: 'Controls randomness in outputs. 0 is most deterministic; 1 is most random'
    },
    allowedTools: {
      label: 'Allowed Tools',
      desc: 'Tools currently enabled for the Agent',
      placeholder: 'Select tools...',
      empty: 'No tools configured'
    },
    systemPrompt: {
      label: 'System Prompt',
      desc: 'Configure the Agent’s system prompt with placeholders that are resolved at runtime.',
      availablePlaceholders: 'Available placeholders:',
      hintPrefix: 'Tip: typing',
      hintSuffix: 'will show available placeholders automatically',
      custom: 'Custom Prompt',
      disabledHint: 'Currently using the default prompt. Enable custom to apply the content below.',
      placeholder: 'Enter the system prompt, or leave blank to use the default...',
      tabHint: 'Configure separate prompts for sessions with web search on or off.',
      tabWebOn: 'Web search enabled',
      tabWebOff: 'Web search disabled'
    },
    reset: {
      header: 'Reset to Default Prompt',
      body: 'Are you sure you want to reset to the default prompt? Your custom prompt will be overwritten.'
    },
    errors: {
      selectThinkingModel: 'Please select a thinking model before enabling Agent mode',
      selectAtLeastOneTool: 'Please select at least one tool',
      iterationsRange: 'Max iterations must be between 1 and 20',
      temperatureRange: 'Temperature must be between 0 and 2',
      validationFailed: 'Configuration validation failed'
    },
    toasts: {
      iterationsSaved: 'Max iterations saved',
      thinkingModelSaved: 'Thinking model saved',
      rerankModelSaved: 'Rerank model saved',
      temperatureSaved: 'Temperature saved',
      toolsUpdated: 'Tools updated',
      customPromptEnabled: 'Custom prompt enabled',
      defaultPromptEnabled: 'Switched to default prompt',
      resetToDefault: 'Reset to default prompt',
      systemPromptSaved: 'System prompt saved',
      autoDisabled: 'Agent configuration incomplete. Agent mode has been disabled automatically'
    }
  },
  conversationSettings: {
    description: 'Configure default behavior and parameters for conversation modes, including prompts for Agent and normal modes',
    agentMode: 'Agent Mode',
    normalMode: 'Normal Mode',
    menus: {
      modes: 'Mode Settings',
      models: 'Model Mapping',
      thresholds: 'Retrieval Thresholds',
      advanced: 'Advanced Settings'
    },
    models: {
      description: 'Manage thinking/chat models and re-rank models for both Agent and normal modes',
      chatGroupLabel: 'Thinking / Chat Models',
      chatGroupDesc: 'Includes Agent reasoning/planning model and the default chat/summary model for normal mode',
      chatModel: {
        label: 'Default chat model (normal mode)',
        desc: 'Used when a conversation does not specify its own model',
        placeholder: 'Select default chat model'
      },
      rerankModel: {
        label: 'Default ReRank model (normal mode)',
        desc: 'Used for re-ranking when a session does not override it',
        placeholder: 'Select default rerank model'
      },
      rerankGroupLabel: 'ReRank Models',
      rerankGroupDesc: 'Includes Agent rerank model and the default rerank model for normal mode'
    },
    thresholds: {
      description: 'Tune retrieval and re-ranking thresholds to balance accuracy and performance'
    },
    maxRounds: {
      label: 'History Rounds',
      desc: 'Number of rounds kept for context and query rewrite'
    },
    embeddingTopK: {
      label: 'Embedding TopK',
      desc: 'Number of documents kept after vector retrieval'
    },
    keywordThreshold: {
      label: 'Keyword Threshold',
      desc: 'Minimum score for keyword retrieval'
    },
    vectorThreshold: {
      label: 'Vector Threshold',
      desc: 'Minimum similarity for vector retrieval'
    },
    rerankTopK: {
      label: 'ReRank TopK',
      desc: 'Documents kept after re-ranking'
    },
    rerankThreshold: {
      label: 'ReRank Threshold',
      desc: 'Minimum score required after re-ranking'
    },
    enableRewrite: {
      label: 'Enable Query Rewrite',
      desc: 'Automatically rewrite multi-turn queries for better recall'
    },
    enableQueryExpansion: {
      label: 'Enable LLM Query Expansion',
      desc: 'When recall is low, call a reasoning model to generate expansion queries (adds latency & cost)'
    },
    fallbackStrategy: {
      label: 'Fallback Strategy',
      desc: 'How to respond when no relevant documents are found',
      fixed: 'Fixed response',
      model: 'Let the model continue answering'
    },
    fallbackResponse: {
      label: 'Fixed fallback response',
      desc: 'Text returned when using the fixed fallback strategy'
    },
    fallbackPrompt: {
      label: 'Fallback Prompt',
      desc: 'Prompt used when fallback strategy is "model"'
    },
    advanced: {
      description: 'Configure query rewrite, fallback strategy and other advanced settings'
    },
    rewritePrompt: {
      system: 'Rewrite System Prompt',
      user: 'Rewrite User Prompt',
      desc: 'System prompt used during query rewrite',
      userDesc: 'User prompt used during query rewrite'
    },
    chatModel: {
      label: 'LLM Model',
      desc: 'Large language model used for summarization and abstract generation'
    },
    rerankModel: {
      label: 'ReRank Model',
      desc: 'Model for re-ranking search results (optional)'
    },
    contextTemplate: {
      label: 'Retrieval Result Summary Prompt',
      desc: 'Prompt template for generating answers based on retrieval results in normal mode',
      placeholder: 'Enter the prompt template for retrieval result summary...',
      custom: 'Custom template',
      disabledHint: 'Currently using the default summary prompt. Enable custom to edit below.'
    },
    systemPrompt: {
      label: 'System Prompt',
      desc: 'System-level prompt for normal mode conversations',
      placeholder: 'Enter the system prompt...',
      custom: 'Custom prompt',
      disabledHint: 'Currently using the default prompt. Enable custom to edit below.'
    },
    temperature: {
      label: 'Temperature',
      desc: 'Controls randomness in outputs. 0 is most deterministic; 1 is most random'
    },
    maxTokens: {
      label: 'Max Tokens',
      desc: 'Maximum number of tokens to generate in the response'
    },
    resetSystemPrompt: {
      header: 'Reset to Default System Prompt',
      body: 'Are you sure you want to reset to the default system prompt?'
    },
    resetContextTemplate: {
      header: 'Reset to Default Summary Prompt',
      body: 'Are you sure you want to reset to the default summary prompt?'
    },
    toasts: {
      chatModelSaved: 'LLM model saved',
      rerankModelSaved: 'ReRank model saved',
      contextTemplateSaved: 'Retrieval result summary prompt saved',
      systemPromptSaved: 'System prompt saved',
      temperatureSaved: 'Temperature saved',
      maxTokensSaved: 'Max tokens saved',
      maxRoundsSaved: 'History rounds saved',
      embeddingSaved: 'Embedding TopK saved',
      keywordThresholdSaved: 'Keyword threshold saved',
      vectorThresholdSaved: 'Vector threshold saved',
      rerankTopKSaved: 'ReRank TopK saved',
      rerankThresholdSaved: 'ReRank threshold saved',
      enableRewriteSaved: 'Query rewrite preference saved',
      enableQueryExpansionSaved: 'Query expansion preference saved',
      fallbackStrategySaved: 'Fallback strategy saved',
      fallbackResponseSaved: 'Fallback response saved',
      fallbackPromptSaved: 'Fallback prompt saved',
      rewritePromptSystemSaved: 'Rewrite system prompt saved',
      rewritePromptUserSaved: 'Rewrite user prompt saved',
      customPromptEnabled: 'Custom prompt enabled',
      defaultPromptEnabled: 'Using default prompt',
      customContextTemplateEnabled: 'Custom summary prompt enabled',
      defaultContextTemplateEnabled: 'Using default summary prompt',
      resetSystemPromptSuccess: 'Reset to default system prompt',
      resetContextTemplateSuccess: 'Reset to default summary prompt'
    }
  },
  // New: MCP Settings
  mcpSettings: {
    title: 'MCP Services',
    description: 'Manage external MCP (Model Context Protocol) services for tools/resources in Agent mode',
    configuredServices: 'Configured Services',
    manageAndTest: 'Manage and test MCP service connections',
    addService: 'Add Service',
    empty: 'No MCP services',
    addFirst: 'Add the first MCP service',
    actions: {
      test: 'Test Connection'
    },
    toasts: {
      loadFailed: 'Failed to load MCP services',
      enabled: 'MCP service enabled',
      disabled: 'MCP service disabled',
      updateStateFailed: 'Failed to update MCP service status',
      testing: 'Testing {name}...',
      noResponse: 'Test failed: no response from server',
      testFailed: 'Failed to test MCP service',
      deleted: 'MCP service deleted',
      deleteFailed: 'Failed to delete MCP service'
    },
    deleteConfirmBody: 'Delete MCP service "{name}"? This action cannot be undone.',
    unnamed: 'Unnamed'
  },
  // New: Model Settings
  modelSettings: {
    title: 'Model Settings',
    description: 'Manage different types of AI models, including local Ollama and remote APIs',
    actions: {
      addModel: 'Add Model',
      setDefault: 'Set as Default'
    },
    source: {
      remote: 'Remote',
      openaiCompatible: 'OpenAI-compatible'
    },
    chat: {
      title: 'Chat Models',
      desc: 'Configure large language models for chatting',
      empty: 'No chat models'
    },
    embedding: {
      title: 'Embedding Models',
      desc: 'Configure embedding models for text vectorization',
      empty: 'No embedding models'
    },
    rerank: {
      title: 'ReRank Models',
      desc: 'Configure models for result re-ranking',
      empty: 'No re-rank models'
    },
    vllm: {
      title: 'VLLM Vision Models',
      desc: 'Configure vision-language models for multimodal understanding',
      empty: 'No VLLM models'
    },
    toasts: {
      nameRequired: 'Model name cannot be empty',
      nameTooLong: 'Model name cannot exceed 100 characters',
      baseUrlRequired: 'Base URL is required for remote APIs',
      baseUrlInvalid: 'Invalid Base URL, please enter a valid URL',
      dimensionInvalid: 'Embedding dimension must be between 128 and 4096',
      updated: 'Model updated',
      added: 'Model added',
      saveFailed: 'Failed to save model',
      deleted: 'Model deleted',
      deleteFailed: 'Failed to delete model',
      setDefault: 'Set as default',
      setDefaultFailed: 'Failed to set default model'
    },
    confirmDelete: 'Are you sure you want to delete this model?'
  },
  // New: Ollama Settings
  ollamaSettings: {
    title: 'Ollama Settings',
    description: 'Manage local Ollama service and view/download models',
    status: {
      label: 'Ollama Service Status',
      desc: 'Automatically detect local Ollama service availability. If the service is down or the URL is incorrect, status will be "Unavailable".',
      testing: 'Testing',
      available: 'Available',
      unavailable: 'Unavailable',
      untested: 'Not Tested',
      retest: 'Retest'
    },
    address: {
      label: 'Service URL',
      desc: 'The API address of the local Ollama service, auto-detected by the system. To modify, set it in the .env file.',
      placeholder: 'http://localhost:11434',
      failed: 'Connection failed. Please check whether Ollama is running or the URL is correct'
    },
    download: {
      title: 'Download Models',
      descPrefix: 'Enter a model name to download,',
      browse: 'Browse Ollama model library',
      placeholder: 'e.g. qwen2.5:0.5b',
      download: 'Download',
      downloading: 'Downloading: {name}'
    },
    installed: {
      title: 'Installed Models',
      desc: 'Models installed in Ollama',
      empty: 'No installed models'
    },
    toasts: {
      connected: 'Connected successfully',
      connectFailed: 'Connection failed. Please check whether Ollama is running',
      listFailed: 'Failed to get model list',
      downloadFailed: 'Download failed. Please try again later',
      downloadStarted: 'Started downloading model {name}',
      downloadCompleted: 'Model {name} downloaded successfully',
      progressFailed: 'Failed to query download progress'
    }
  },
  // New: MCP Service Dialog
  mcpServiceDialog: {
    addTitle: 'Add MCP Service',
    editTitle: 'Edit MCP Service',
    name: 'Service Name',
    namePlaceholder: 'Enter service name',
    description: 'Description',
    descriptionPlaceholder: 'Enter service description',
    transportType: 'Transport Type',
    transport: {
      sse: 'SSE (Server-Sent Events)',
      httpStreamable: 'HTTP Streamable',
      stdio: 'Stdio'
    },
    serviceUrl: 'Service URL',
    serviceUrlPlaceholder: 'https://example.com/mcp',
    command: 'Command',
    args: 'Arguments',
    argPlaceholder: 'Argument {index}',
    addArg: 'Add Argument',
    envVars: 'Environment Variables',
    envKeyPlaceholder: 'Key',
    envValuePlaceholder: 'Value',
    addEnvVar: 'Add Environment Variable',
    enableService: 'Enable Service',
    authConfig: 'Authentication',
    apiKey: 'API Key',
    bearerToken: 'Bearer Token',
    optional: 'Optional',
    advancedConfig: 'Advanced',
    timeoutSec: 'Timeout (s)',
    retryCount: 'Retry Count',
    retryDelaySec: 'Retry Delay (s)',
    rules: {
      nameRequired: 'Please enter the service name',
      transportRequired: 'Please select a transport type',
      urlRequired: 'Please enter the service URL',
      urlInvalid: 'Please enter a valid URL',
      commandRequired: 'Please select a command (uvx or npx)',
      argsRequired: 'Please enter at least one argument'
    },
    toasts: {
      created: 'MCP service created',
      updated: 'MCP service updated',
      createFailed: 'Failed to create MCP service',
      updateFailed: 'Failed to update MCP service'
    }
  }
}